package Coordinador;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
import Tipos.*;

public class CoordinadorEscuchadorTCP extends Thread{
    private Buffer colaPeticionesEscuchador;
    private ObjectInputStream inStream;
    private boolean cierre;
    private String nombre;
    
    CoordinadorEscuchadorTCP(String coordinadorEscuchador, Buffer bufferPeticiones, ObjectInputStream inStream) {
        //super(coordinadorEscuchador);
        this.inStream = inStream;//entrada de datos al socket;
        this.colaPeticionesEscuchador = bufferPeticiones;
        this.cierre = false;
        this.nombre = coordinadorEscuchador;
  
    }
    

   @Override
    public void run() {
        Mensaje dato;
        //System.out.println("Soy el Coordinador Escuchador...");
	try {  
		while(!cierre) {   
                        Object aux = inStream.readObject();
                        if (aux instanceof Mensaje){ // Se comprueba si es de tipo Mensaje
                            dato = (Mensaje) aux;
                            if(dato.getMensajePanaderia() == TipoMensaje.PANADERIA_CERRADA)
                                cierre = true;
                            colaPeticionesEscuchador.put(dato);
                            //System.out.println("Coordinador-Thread Escuchador----> recibe dato: \n" + dato.toString()+"\n");
                        }else   
                            System.out.println("CoordinadorEscuchadorTCP recibi un dato que no es un mensaje ");
		}
	}
	catch(UnknownHostException ex) {
            Logger.getLogger(CoordinadorEscuchadorTCP.class.getName()).log(Level.SEVERE, nombre, ex);
	}catch(  IOException | ClassNotFoundException ex){
            Logger.getLogger(CoordinadorEscuchadorTCP.class.getName()).log(Level.SEVERE, nombre, ex);
	}
     }
}
